package com.ssm.changeunit.console.parser;

import com.ssm.changeunit.command.*;
import org.apache.commons.cli.*;

public class RmConsoleParser extends ConsoleParser {
    @Override
    public CommandWorkerOptions parse(java.lang.String[] userCommand) throws ConsoleParseException {
         try {
            // 파서 생성
            CommandLineParser parser = new GnuParser();

            Options options = new Options();

            Option itemOption = OptionBuilder.withLongOpt("item").hasArgs().isRequired().create();

            options.addOption(itemOption);

            CommandLine commandLine = parser.parse(options, userCommand);

            // item 프로퍼티가 있는지 검사
            if(commandLine.hasOption("item")) {
                CommandWorkerOptions commandWorkerOptions = new CommandWorkerOptions();
                CommandWorkerOption commandWorkerOption = new CommandWorkerOption("item");
                
                commandWorkerOptions.addCommandWorkerOption(commandWorkerOption);
                
                String[] items = commandLine.getOptionValues("item");

                // 파일 리스트
                for(String item : items) {
                    // 파일 추가
                    commandWorkerOption.addValue(item);
                }
                
                return commandWorkerOptions;
            }
            else {
                // 에러 발생
                throw new ConsoleParseException("item 프로퍼티가 존재하지 않습니다.");
            }
        }
        catch(ParseException ex) {
            throw new ConsoleParseException(ex);
        }
    }
}

